#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

/*
 * 是标准C库中用于操作自定义信号集的一个函数
 */

#if 0

# 初始化一个自定义信号集，将其所有信号都清空，也就是将信号集中的所有的标志位置为0，
# 使得这个集合不包含任何信号，也就是不阻塞任何信号。
int sigemptyset(sigset_t *set);

    set：指向sigset_t类型的指针，sigset_t是一个信号集类型，用于表示一个信号集。
         把用这个指针指向的信号集清空，也就是不阻塞任何信号。

    成功时，返回0；
    失败时，返回-1，并设置errno表示错误原因。




#endif


void signal_handler(int signal_number) 
{
  printf("Received signal %d\n", signal_number);
  exit(signal_number);
}

int main() 
{
  struct sigaction sa;
  sigset_t signal_set;

  // 初始化信号集
  if (sigemptyset(&signal_set) == -1) {
    perror("sigemptyset");
    return 1;
  }

  // 设置信号处理程序
  sa.sa_handler = signal_handler;
  sa.sa_mask = signal_set;
  sa.sa_flags = 0;

  // 注册信号处理程序
  if (sigaction(SIGINT, &sa, NULL) == -1) {
    perror("sigaction");
    return 1;
  }

  // 进入无限循环，等待信号
  while (1) {
    pause();
  }

  return 0;
}


#if 0



#endif
